import { defineStore } from 'pinia'

export const useUserStore = defineStore('user', {
  state: () => ({
    token: '',
    userInfo: null,
    isLogin: false
  }),
  
  getters: {
    // 判断用户是否已登录
    hasLogin: (state) => state.isLogin && state.token
  },
  
  actions: {
    // 设置用户Token
    setToken(token) {
      this.token = token
      this.isLogin = true
    },
    
    // 设置用户信息
    setUserInfo(info) {
      // 确保userInfo是纯数据对象，避免循环引用
      if (info) {
        // 使用解构来创建一个新对象，避免引用问题
        this.userInfo = {
          nickName: info.nickName || '',
          avatarUrl: info.avatarUrl || '',
          // 添加其他需要的用户属性
        }
      } else {
        this.userInfo = null
      }
    },
    
    // 获取微信用户信息并登录
    async wxLogin(code) {
      try {
        // const res = await api.login({ code })
        const res = { data: { token: 'mock_token', userInfo: { nickName: '用户昵称', avatarUrl: '' } } }
        
        if (res && res.data) {
          this.setToken(res.data.token)
          this.setUserInfo(res.data.userInfo)
          return true
        }
        return false
      } catch (error) {
        console.error('微信登录失败', error)
        return false
      }
    },
    
    // 退出登录
    logout() {
      this.token = ''
      this.userInfo = null
      this.isLogin = false
      try {
        uni.removeStorageSync('user')
      } catch (err) {
        console.error('清除存储失败', err)
      }
    }
  },
  
  persist: {
    key: 'user',
    paths: ['token', 'userInfo', 'isLogin']
  }
}) 